Non-volatile solid state memory technologies, such as non-volatile random access memory (NVRAM) and the like, have been rapidly maturing in the recent years. Further, the NVRAM can be modeled as a block oriented device. In this case, programming modules are typically implemented using existing memory hierarchy, i.e., RAM ↔NVRAM based pseudo block devices. However, such implementation may need additional programming instructions to store the data onto the NVRAM based devices via a block mode interface.
Furthermore, NVRAM provides byte oriented access, and can be used as a temporary memory and/or as a persistent memory. This can facilitate a target program/application to access the data structures from the NVRAM. In addition, the data types used in existing computer programming languages may be easily ported to use NVRAM for storage other than for pointers.
Moreover, an emerging trend is to use NVRAMs as replacement to DRAMs in computers. Since NVRAMs have a property of persistence as well as byte addressability, they can be used to store data structures similar to the way it is done for DRAMs. For example, linked-lists may be saved as-is in a persistent manner to avoid rebuilding them upon power-up after a reboot or power-off.